#makefile的语法很严格, 不要随便加空格!!!
#定义变量 -- 取出变量:$() -- 类似于指针解引用
BIN=Rector_server
COMPILER=g++
#SRC=$(wildcard *.cpp) #作用同下
SRC=$(shell ls *.cpp) #取出当前目录下的所有.c文件
OBJ=$(SRC:.cpp=.o) #形成和SRC里的所有.c文件同名的.o文件
RM=rm -f


$(BIN):$(OBJ) # $^:依赖文件列表  $@:目标文件列表  @:命令不回显  
	$(COMPILER) $^ -o $@ -ljsoncpp -std=c++17


# $<:依赖文件列表中的文件(.cpp)一个一个的交给编译器(gcc)
# -g:编译时向二进制文件中加入调试信息(所以编译必须加, 链接可加可不加)  
# -std=c99:满足c99标准(eg:支持for内部定义变量等)

#$(OBJ):$(SRC) #作用同下
#*.o:*.cpp
%.o:%.cpp
	$(COMPILER) -c $< -o $@ -std=c++17


.PHONY:clean
clean:
	$(RM) $(OBJ) $(BIN)